package org.ee.core.util;


import java.util.*;
import java.util.stream.Collectors;

/**
 * 集合工具类
 * @Author jokr
 * @Date 2025/8/26 下午1:54
 */
public class CollectionUtil {

    // 判断集合是否为空
    public static boolean isEmpty(Collection<?> collection) {
        return collection == null || collection.isEmpty();
    }

    // 判断集合是否不为空
    public static boolean isNotEmpty(Collection<?> collection) {
        return !isEmpty(collection);
    }

    // 去重操作
    public static <T> List<T> distinct(List<T> list) {
        if (list == null) {
            return Collections.emptyList();
        }
        return list.stream().distinct().collect(Collectors.toList());
    }

    // 查找集合中的最大元素（需要Comparable接口）
    public static <T extends Comparable<T>> T findMax(List<T> list) {
        if (list == null || list.isEmpty()) {
            return null;
        }
        return Collections.max(list);
    }

    // 查找集合中的最小元素（需要Comparable接口）
    public static <T extends Comparable<T>> T findMin(List<T> list) {
        if (list == null || list.isEmpty()) {
            return null;
        }
        return Collections.min(list);
    }

    // 对集合进行排序（升序）
    public static <T extends Comparable<T>> List<T> sort(List<T> list) {
        if (list == null) {
            return Collections.emptyList();
        }
        return list.stream().sorted().collect(Collectors.toList());
    }

    // 对集合进行排序（降序）
    public static <T extends Comparable<T>> List<T> sortDescending(List<T> list) {
        if (list == null) {
            return Collections.emptyList();
        }
        return list.stream().sorted(Collections.reverseOrder()).collect(Collectors.toList());
    }

    // 合并多个集合
    public static <T> List<T> merge(List<T>... lists) {
        return Arrays.stream(lists).flatMap(Collection::stream).collect(Collectors.toList());
    }
}
